#ifndef     SCENE_GAME_MAP_HPP
# define    SCENE_GAME_MAP_HPP

# include <map>
# include <string>

# include "Scene/Game/MapBlock.hpp"
# include "Scene/Game/MapItem.hpp"

namespace   Scene
{
    namespace   Game
    {
        typedef std::map<std::string, MapItem*> ItemMap;
        class   Map
        {
            public:
                Map();
                Map(int width, int height);
                virtual ~Map();

            public:
                int     getWidth() const;
                void    setWidth(int width);
                int     getHeight() const;
                void    setHeight(int height);

                MapItem*    getItem(std::string const & name);
                void        addItem(std::string const & name, MapItem* item);

                MapBlock*   getBlock(int x, int y) const;
                void        setBlock(int x, int y, MapBlock const & block);

            private:
                int         _width;
                int         _height;
                ItemMap     _items;
                MapBlock**  _blocks;
        };
    }
}

#endif       // SCENE_GAME_MAP_HPP
